#ifndef __REACTOR_H__
#define __REACTOR_H__

#include <event.h>
//<通过libevent库，实现reactor模式
//Reacor模式是一种事件驱动机制。它提前注册好回调函数，当有对应事件发生时就调用回调函数。
//同时使用one loop per thread思想：
    //即一个线程中一个loop循环，由线程对象调用这个loop()开启循环，
    //再由这个循环来进行等待事件就绪的监听，并分发到各自的事件处理函数。（这里的处理函数是回调函数）

class Reactor {
private:
    struct event_base* m_reactor;   //event_base，libevent中封装了IO复用函数的结构体

public:
    Reactor();
    ~Reactor();

    //这个函数实现监听文件描述符int fd上的事件（short），并调用回调函数event_callback_fn处理事件，
    //回调函数需要的参数由void*传入（一般传入this指针）
    void AddEventAndHander(int fd, short, event_callback_fn, void*);
    void Loop();
};




#endif